Lisp1 と Lisp-2
定義
Lisp1 → 関数と変数が同じ名前空過に属する → 名前空間が1つ
scheme, Python など
Lisp2 → 関数と変数の名前空間が別れている → 名前空間が2つ
CommonLisp, Ruby, Smalltalk
名前空間の方式であり、Lisp限定の用語ではない
Lisp1
Lisp1は print("hello world") があったら、 print は変数参照式。
printの評価結果が呼び出し可能オブジェクト or 関数オブジェクトであり、それを "hello world" という引数で呼び出すことを意味する
Lisp2
print("hello world") は、関数テーブルから print関数を探し出し、それを "hello world" という引数で呼び出す。
名前空間が2つなので、同じスコープ内に print という変数があっても print 関数は呼び出せる。
げんごの仕組み プログラミング